'use strict';
const jwt = require('jsonwebtoken');
let tokenMatch = null;
let islogin = false;
module.exports = () => {
  return async function auth(ctx, next) {
    
    try {
      const token = ctx.get("token");
      const app = ctx.app;
      //没有token
      console.log("token+++++++")
      console.log(token);
      console.log("=-----------")
      if (!token) {
        if (~ctx.path.indexOf('login')) {
          islogin = true;
        } else {
          ctx.body = ctx.helper.fomateData(null, 5000);
         
          return;
        }
      }

      tokenMatch = jwt.verify(token, app.config.jwt.secret);
      if (!tokenMatch && !!islogin) {
        ctx.body = '身份过期，请重新登录';
        // ctx.throw(401, '身份过期，请重新登录');
      }

      const {
        id 
      } = jwt.decode(token);


      const user = ctx.service.user.find({
        id,
      });

      if (!user && !!islogin) {
        ctx.throw(401, '身份校验失败，用户不存在');
      } else if (user.delete && !!islogin) {
        ctx.throw(401, '身份校验失败，用户已被封禁');
      } else {
        // app.print('身份校验成功');
        ctx.state = user;
      }
     
    } catch (e) {
      console.log(e);
      // await next();
    }
    await next();
  };
};
